﻿using SIIE_ERP.BaseDatos;
using SIIE_ERP.BaseDatos.Ventas.Transacciones;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SIIE_ERP.Codigo.Ventas.Honorarios
{
    public static class HonorariosCalculos
    {
        public static string Get_ArticuloTotal_Final(string PrecioTotal, string Cantidad)
        {
            try
            {
                double Resultado = 0;
                double D_PrecioTotal = Double.Parse(PrecioTotal);                
                double D_Cantidad = Double.Parse(Cantidad);

                Resultado = (D_Cantidad * D_PrecioTotal);

                return Math.Round(Resultado, 2).ToString();
            }
            catch (Exception)
            {
                return "";
            }
        }

        public static string Get_SubTotal_Final(string PrecioTotal, string Porc_IVA, string Porc_IVARet, string Porc_ISRRet, string Cantidad)
        {
            try
            {
                double Resultado = 0;

                double D_PrecioTotal = Double.Parse(PrecioTotal);                
                double D_Porc_IVA = Double.Parse(Porc_IVA);
                double D_Porc_IVARet = Double.Parse(Porc_IVARet);
                double D_Porc_ISRRet = Double.Parse(Porc_ISRRet);
                double D_Cantidad = Double.Parse(Cantidad);
                double D_PrecioUnitario = 0;

                D_PrecioUnitario = Double.Parse(Get_PrecioUnitario_Final(PrecioTotal, Cantidad, Porc_IVA, Porc_IVARet, Porc_ISRRet));

                Resultado = Math.Round((D_PrecioUnitario * D_Cantidad) + Double.Parse(Get_Impuestos_Final(D_PrecioUnitario.ToString(), Porc_IVA, Cantidad)), 2);
                return Resultado.ToString();
            }
            catch (Exception)
            {
                return "";
            }
        }

        public static string Get_Impuestos_Final(string PrecioUnitario, string Porc_Impuesto, string Cantidad)
        {
            try
            {
                double Resultado = 0;
                double D_PrecioUnitario = Double.Parse(PrecioUnitario);                
                double D_Porc_Impuesto = Double.Parse(Porc_Impuesto);
                double D_Cantidad = Double.Parse(Cantidad);

                var Impuesto = (100 + D_Porc_Impuesto) / 100;

                Resultado = Math.Round(((D_PrecioUnitario * Impuesto) - D_PrecioUnitario) * D_Cantidad, 2);                                

                return Resultado.ToString();
            }
            catch (Exception)
            {
                return "";
            }
        }

        public static string Get_PrecioUnitario_Final(string PrecioTotal, string Cantidad, string Porc_IVA, string Porc_IVARet, string Porc_ISRRet)
        {
            try
            {
                double Resultado = 0;
                double D_PrecioTotal = Double.Parse(PrecioTotal);
                double D_Cantidad = Double.Parse(Cantidad);
                double D_Porc_IVA = Double.Parse(Porc_IVA);
                double D_Porc_IVARet = Double.Parse(Porc_IVARet);
                double D_Porc_ISRRet = Double.Parse(Porc_ISRRet);

                if (D_Cantidad == 0)
                    return "0";

                Resultado = Math.Round(((100 * D_PrecioTotal) / (100 + D_Porc_IVA - D_Porc_IVARet - D_Porc_ISRRet)), 2);
                return Resultado.ToString();
            }
            catch (Exception)
            {
                return "";
            }
        }        
    }
}
